package model;

import java.util.ArrayList;
import java.util.List;
import java.util.SortedMap;
import java.util.TreeMap;

import business.coding.CandidateCenter;
import business.database.cache.CacheCodeCorp;

/**
 * Esta es la cache de la tabla de corps a codificar
 * @author 53385255R
 *
 */
public class CacheCodeCorps {

	private SortedMap<Integer,CacheCodeCorp> _cacheCodeCorps;
	
	public CacheCodeCorps() {
		_cacheCodeCorps = new TreeMap<Integer,CacheCodeCorp>();
	}
	
	public void setCacheCodeCorps(List<CacheCodeCorp> corps) {
		_cacheCodeCorps.clear();
		
		for (CacheCodeCorp cachecorp : corps) {
			_cacheCodeCorps.put(cachecorp.get_idcodecorp(), cachecorp);
		}
	}
	
	public SortedMap<Integer,CacheCodeCorp> getCacheCodeCorps() {
		return _cacheCodeCorps;
	}
	
	public CacheCodeCorp getCacheCodeCorp(int idcodecorp) {
		return _cacheCodeCorps.get(idcodecorp);
	}
	
	public List<CacheCodeCorp> getCacheCodeCorps(List<Integer> idcodecorps) {
		List<CacheCodeCorp> l_caches = new ArrayList<CacheCodeCorp>();
		for (int idcodecorp : idcodecorps)
			l_caches.add(_cacheCodeCorps.get(idcodecorp));
		return l_caches;
	}
	
	public Integer getMinIdCodeCorp() {
		if (_cacheCodeCorps.size() > 0) {
			return _cacheCodeCorps.get(_cacheCodeCorps.firstKey()).get_idcodecorp();
		} else return 0;
	}
	
	public Integer getMaxIdCodeCorp() {
		if (_cacheCodeCorps.size() > 0) {
			return _cacheCodeCorps.get(_cacheCodeCorps.lastKey()).get_idcodecorp();
		} else return 0;
	}

	public void removeCacheCodeCorp(int idcodecorp) {
		_cacheCodeCorps.remove(idcodecorp);
		
	}

	public List<CandidateCenter> getCandidateCenters(Integer idcodecorp) {
		if (_cacheCodeCorps.get(idcodecorp) != null)
			return _cacheCodeCorps.get(idcodecorp).get_candidateCenters();
		else return null;
	}
	
	public void setCandidateCenters(Integer idcodecorp, List<CandidateCenter> centers) {
		if (_cacheCodeCorps.get(idcodecorp) != null)
			_cacheCodeCorps.get(idcodecorp).set_candidateCenters(centers);
		
	}

	/**
	 * Elimina el comentario
	 * @param idcodecorp
	 */
	public void removeComment(int idcodecorp) {
		if (_cacheCodeCorps.get(idcodecorp) != null)
			_cacheCodeCorps.get(idcodecorp).set_comment("");
	}

	public void appendComment(int idcodecorp, String notes) {
		if (_cacheCodeCorps.get(idcodecorp) != null) {
			String note = _cacheCodeCorps.get(idcodecorp).get_comment();
			_cacheCodeCorps.get(idcodecorp).set_comment(note + ". " + notes);
		}
		
	}
	
	
	
	
}
